package eteam.aps.model.entity.other;

import com.fasterxml.jackson.annotation.JsonAlias;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

import java.time.LocalDate;

/**
 * @author LiuLei
 */
@ApiModel(description = "订单头", value = "SalesOrderHead")
@JsonIgnoreProperties(ignoreUnknown = true)
public class SalesOrderHead {

    /**
     * 业务类型;业务类型
     */
    @ApiModelProperty(name = "业务类型", notes = "业务类型")
    @JsonAlias("businesstype")
    private String fBusinessType;

    /**
     * 销售类型编码;销售类型编码
     */
    @ApiModelProperty(name = "销售类型编码", notes = "销售类型编码")
    @JsonAlias("typecode")
    private String fTypeCode;

    /**
     * 销售类型;销售类型
     */
    @ApiModelProperty(name = "销售类型", notes = "销售类型")
    @JsonAlias("typename")
    private String fTypeName;

    /**
     * 单据状态;单据状态
     */
    @ApiModelProperty(name = "单据状态", notes = "单据状态")
    @JsonAlias("state")
    private String fDState;

    /**
     * 客户代码;客户代码
     */
    @ApiModelProperty(name = "客户代码", notes = "客户代码")
    @JsonAlias("custcode")
    private String fCustomerCode;

    /**
     * 客户名称;客户名称
     */
    @ApiModelProperty(name = "客户名称", notes = "客户名称")
    @JsonAlias("cusname")
    private String fCustomerName;

    /**
     * 客户简称;客户简称
     */
    @ApiModelProperty(name = "客户简称", notes = "客户简称")
    @JsonAlias("cusabbname")
    private String fCustomerSimName;

    /**
     * 单据日期;单据日期
     */
    @ApiModelProperty(name = "单据日期", notes = "单据日期")
    @JsonAlias("date")
    @JsonDeserialize(using = LocalDateDeserializer.class)
    @JsonSerialize(using = LocalDateSerializer.class)
    private LocalDate fDate;

    /**
     * 部门编码;部门编码
     */
    @ApiModelProperty(name = "部门编码", notes = "部门编码")
    @JsonAlias("deptcode")
    private String fDeptCode;

    /**
     * 部门名称;部门名称
     */
    @ApiModelProperty(name = "部门名称", notes = "部门名称")
    @JsonAlias("deptname")
    private String fDeptName;

    /**
     * 人员编码;人员编码
     */
    @ApiModelProperty(name = "人员编码", notes = "人员编码")
    @JsonAlias("personcode")
    private String fPersonCode;

    /**
     * 人员;人员
     */
    @ApiModelProperty(name = "人员", notes = "人员")
    @JsonAlias("personname")
    private String fPersonName;

    /**
     * 联系人;联系人
     */
    @ApiModelProperty(name = "联系人", notes = "联系人")
    @JsonAlias("ccusperson")
    private String fCusPerson;

    /**
     * 联系人编码;联系人编码
     */
    @ApiModelProperty(name = "联系人编码", notes = "联系人编码")
    @JsonAlias("ccuspersoncode")
    private String fCusPersonCode;

    /**
     * 收货地址编码;收货地址编码
     */
    @ApiModelProperty(name = "收货地址编码", notes = "收货地址编码")
    @JsonAlias("caddcode")
    private String fCusAddCode;

    /**
     * 收货地址;收货地址
     */
    @ApiModelProperty(name = "收货地址", notes = "收货地址")
    private String fCusReceiveAddress;

    /**
     * 预完工日期;预完工日期
     */
    @ApiModelProperty(name = "预完工日期", notes = "预完工日期")
    @JsonAlias("dpremodatebt")
    @JsonDeserialize(using = LocalDateDeserializer.class)
    @JsonSerialize(using = LocalDateSerializer.class)
    private LocalDate fCompleteDate;

    /**
     * 预计发货时间;预计发货时间
     */
    @ApiModelProperty(name = "预计发货时间", notes = "预计发货时间")
    @JsonAlias("dpredatebt")
    // 添加LocalDate序列化器
    @JsonDeserialize(using = LocalDateDeserializer.class)
    @JsonSerialize(using = LocalDateSerializer.class)
    private LocalDate fSendDate;

    /**
     * 制单人;制单人
     */
    @ApiModelProperty(name = "制单人", notes = "制单人")
    @JsonAlias("maker")
    private String fMaker;

    /**
     * 审核人;审核人
     */
    @ApiModelProperty(name = "审核人", notes = "审核人")
    @JsonAlias("verifier")
    private String fVerifier;

    /**
     * 单据头自定义项1;单据头自定义项1
     */
    @ApiModelProperty(name = "单据头自定义项1", notes = "单据头自定义项1")
    @JsonAlias("define1")
    private String fDefine1;

    /**
     * 单据头自定义项2;单据头自定义项2
     */
    @ApiModelProperty(name = "单据头自定义项2", notes = "单据头自定义项2")
    @JsonAlias("define2")
    private String fDefine2;

    /**
     * 发货地址;发货地址
     */
    @ApiModelProperty(name = "发货地址", notes = "发货地址")
    @JsonAlias("sendaddress")
    private String fSendAddress;

    /**
     * 收货方;收货方
     */
    @ApiModelProperty(name = "收货方", notes = "收货方")
    private String fSender;

    /**
     * 经办人;经办人
     */
    @ApiModelProperty(name = "经办人", notes = "经办人")
    private String fAgent;

    /**
     * 经办人电话;经办人电话
     */
    @ApiModelProperty(name = "经办人电话", notes = "经办人电话")
    private String fAgentPhone;

    /**
     * 发货物流;发货物流
     */
    @ApiModelProperty(name = "发货物流", notes = "发货物流")
    private String fSendLogistics;

    /**
     * 订单编号;订单编号
     */
    @ApiModelProperty(name = "订单编号", notes = "订单编号")
    private String fOrderCode;

    /**
     * 单号;单号
     */
    @ApiModelProperty(name = "单号", notes = "单号")
    private String fOrderNumber;

    /**
     * 通知单号日期【当前日期 y-m-d】
     */
    @ApiModelProperty(name = "通知单号日期【当前日期 y-m-d】", notes = "通知单号日期")
    private LocalDate fOrderDate;

    /**
     * 单别编号【2240】;单别编号
     */
    @ApiModelProperty(name = "单别编号【2240】", notes = "单别编号")
    private String fWorksheetCode;

    /**
     * 单别名称【销售订单】;单别名称
     */
    @ApiModelProperty(name = "单别名称【销售订单】", notes = "单别名称")
    private String fWorksheetName;

    public String getfBusinessType() {
        return fBusinessType;
    }

    public void setfBusinessType(String fBusinessType) {
        this.fBusinessType = fBusinessType;
    }

    public String getfTypeCode() {
        return fTypeCode;
    }

    public void setfTypeCode(String fTypeCode) {
        this.fTypeCode = fTypeCode;
    }

    public String getfTypeName() {
        return fTypeName;
    }

    public void setfTypeName(String fTypeName) {
        this.fTypeName = fTypeName;
    }

    public String getfDState() {
        return fDState;
    }

    public void setfDState(String fDState) {
        this.fDState = fDState;
    }

    public String getfCustomerCode() {
        return fCustomerCode;
    }

    public void setfCustomerCode(String fCustomerCode) {
        this.fCustomerCode = fCustomerCode;
    }

    public String getfCustomerName() {
        return fCustomerName;
    }

    public void setfCustomerName(String fCustomerName) {
        this.fCustomerName = fCustomerName;
    }

    public String getfCustomerSimName() {
        return fCustomerSimName;
    }

    public void setfCustomerSimName(String fCustomerSimName) {
        this.fCustomerSimName = fCustomerSimName;
    }

    public LocalDate getfDate() {
        return fDate;
    }

    public void setfDate(LocalDate fDate) {
        this.fDate = fDate;
    }

    public String getfDeptCode() {
        return fDeptCode;
    }

    public void setfDeptCode(String fDeptCode) {
        this.fDeptCode = fDeptCode;
    }

    public String getfDeptName() {
        return fDeptName;
    }

    public void setfDeptName(String fDeptName) {
        this.fDeptName = fDeptName;
    }

    public String getfPersonCode() {
        return fPersonCode;
    }

    public void setfPersonCode(String fPersonCode) {
        this.fPersonCode = fPersonCode;
    }

    public String getfPersonName() {
        return fPersonName;
    }

    public void setfPersonName(String fPersonName) {
        this.fPersonName = fPersonName;
    }

    public String getfCusPerson() {
        return fCusPerson;
    }

    public void setfCusPerson(String fCusPerson) {
        this.fCusPerson = fCusPerson;
    }

    public String getfCusPersonCode() {
        return fCusPersonCode;
    }

    public void setfCusPersonCode(String fCusPersonCode) {
        this.fCusPersonCode = fCusPersonCode;
    }

    public String getfCusAddCode() {
        return fCusAddCode;
    }

    public void setfCusAddCode(String fCusAddCode) {
        this.fCusAddCode = fCusAddCode;
    }

    public String getfCusReceiveAddress() {
        return fCusReceiveAddress;
    }

    public void setfCusReceiveAddress(String fCusReceiveAddress) {
        this.fCusReceiveAddress = fCusReceiveAddress;
    }

    public LocalDate getfCompleteDate() {
        return fCompleteDate;
    }

    public void setfCompleteDate(LocalDate fCompleteDate) {
        this.fCompleteDate = fCompleteDate;
    }

    public LocalDate getfSendDate() {
        return fSendDate;
    }

    public void setfSendDate(LocalDate fSendDate) {
        this.fSendDate = fSendDate;
    }

    public String getfMaker() {
        return fMaker;
    }

    public void setfMaker(String fMaker) {
        this.fMaker = fMaker;
    }

    public String getfVerifier() {
        return fVerifier;
    }

    public void setfVerifier(String fVerifier) {
        this.fVerifier = fVerifier;
    }

    public String getfDefine1() {
        return fDefine1;
    }

    public void setfDefine1(String fDefine1) {
        this.fDefine1 = fDefine1;
    }

    public String getfDefine2() {
        return fDefine2;
    }

    public void setfDefine2(String fDefine2) {
        this.fDefine2 = fDefine2;
    }

    public String getfSendAddress() {
        return fSendAddress;
    }

    public void setfSendAddress(String fSendAddress) {
        this.fSendAddress = fSendAddress;
    }

    public String getfSender() {
        return fSender;
    }

    public void setfSender(String fSender) {
        this.fSender = fSender;
    }

    public String getfAgent() {
        return fAgent;
    }

    public void setfAgent(String fAgent) {
        this.fAgent = fAgent;
    }

    public String getfAgentPhone() {
        return fAgentPhone;
    }

    public void setfAgentPhone(String fAgentPhone) {
        this.fAgentPhone = fAgentPhone;
    }

    public String getfSendLogistics() {
        return fSendLogistics;
    }

    public void setfSendLogistics(String fSendLogistics) {
        this.fSendLogistics = fSendLogistics;
    }

    public String getfOrderCode() {
        return fOrderCode;
    }

    public void setfOrderCode(String fOrderCode) {
        this.fOrderCode = fOrderCode;
    }

    public String getfOrderNumber() {
        return fOrderNumber;
    }

    public void setfOrderNumber(String fOrderNumber) {
        this.fOrderNumber = fOrderNumber;
    }

    public LocalDate getfOrderDate() {
        return fOrderDate;
    }

    public void setfOrderDate(LocalDate fOrderDate) {
        this.fOrderDate = fOrderDate;
    }

    public String getfWorksheetCode() {
        return fWorksheetCode;
    }

    public void setfWorksheetCode(String fWorksheetCode) {
        this.fWorksheetCode = fWorksheetCode;
    }

    public String getfWorksheetName() {
        return fWorksheetName;
    }

    public void setfWorksheetName(String fWorksheetName) {
        this.fWorksheetName = fWorksheetName;
    }
}
